package com.yiwannuofulasi.oauth.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
* <p>
* 授权客户端信息表;1、如果access_token过期,但是此时用户还在活跃,避免用户在使用过程中登录,使用refresh_token请求,此时会重新刷新access_token的有效期,refresh_token的有效期在设置时大于等于2倍access_token的有效期。	2、resource_ids表示资源服务器唯一标识,不设置标识可以访问所有资源;如果资源服务器集群部署,resource_ids保持一致。当资源请求发送到资源服务器的时候会携带access_token,资源服务器会根据access_token找到client_id,进而找到该client可以访问的resource_ids。如果resource_ids包含资源服务器自己设置resource_ids，这关就过去了，就可以继续进行其他的权限验证。	3、scope使用方式：https://www.cnblogs.com/daikainan/p/14360105.html	
* </p>
*
* @author 坚持是一种技术
* @since 2023-04-20
*/
@Data
@TableName("oauth_client_details")
@ApiModel(value = "OauthClientDetails对象", description = "授权客户端信息表;1、如果access_token过期,但是此时用户还在活跃,避免用户在使用过程中登录,使用refresh_token请求,此时会重新刷新access_token的有效期,refresh_token的有效期在设置时大于等于2倍access_token的有效期。	2、resource_ids表示资源服务器唯一标识,不设置标识可以访问所有资源;如果资源服务器集群部署,resource_ids保持一致。当资源请求发送到资源服务器的时候会携带access_token,资源服务器会根据access_token找到client_id,进而找到该client可以访问的resource_ids。如果resource_ids包含资源服务器自己设置resource_ids，这关就过去了，就可以继续进行其他的权限验证。	3、scope使用方式：https://www.cnblogs.com/daikainan/p/14360105.html	")
public class OauthClientDetails implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty("客户端标识")
    @TableId("client_id")
    private String clientId;

    @ApiModelProperty("资源服务器唯一标识")
    @TableField("resource_ids")
    private String resourceIds;

    @ApiModelProperty("客户端密码;不可逆加密")
    @TableField("client_secret")
    private String clientSecret;

    @ApiModelProperty("用来限制客户端访问的权限;空格隔开")
    @TableField("scope")
    private String scope;

    @ApiModelProperty("授权类型;逗号分隔")
    @TableField("authorized_grant_types")
    private String authorizedGrantTypes;

    @ApiModelProperty("web服务重定向地址")
    @TableField("web_server_redirect_uri")
    private String webServerRedirectUri;

    @ApiModelProperty("用来限制客户端访问的权限")
    @TableField("authorities")
    private String authorities;

    @ApiModelProperty("token有效时间")
    @TableField("access_token_validity")
    private Integer accessTokenValidity;

    @ApiModelProperty("token刷新时间;设置时>=2*token有效时间")
    @TableField("refresh_token_validity")
    private Integer refreshTokenValidity;

    @ApiModelProperty("客户端描述信息;若设置必须是JSON格式的数据")
    @TableField("additional_information")
    private String additionalInformation;

    @ApiModelProperty("自动授权;true即可")
    @TableField("autoapprove")
    private String autoapprove;

    @ApiModelProperty("应用名称")
    @TableField("client_name")
    private String clientName;

    @ApiModelProperty("应用秘钥明文")
    @TableField("client_secret_clear")
    private String clientSecretClear;


}